import { PAGE_HOME, TABBAR_PAGES } from '../config/app'

/**
 * 返回上一页
 */
export const back = async (delta = 1) => {
  const [err] = await uni.navigateBack({ delta })

  if (err) {
    console.log(err)
    uni.switchTab({ url: PAGE_HOME.url })
  }
}

/**
 * 页面跳转
 * @param {string} url - 跳转页面地址, 默认跳转首页
 * @param {String} type
 *    switchTab=跳转到 tabBar 页面，并关闭其他所有非 tabBar 页面
 *    reLaunch=关闭所有页面，打开到应用内的某个页面
 *    redirectTo=关闭当前页面，跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面
 *    navigateTo=保留当前页面，跳转到应用内的某个页面。但是不能跳到 tabbar 页面
 */
export const jump = (url = PAGE_HOME.url, type = 'navigateTo') => {
  const hasTabbarPage = TABBAR_PAGES.findIndex(route => {
    const reg = new RegExp(route.url, 'g')
    return reg.test(url)
  })
  if (hasTabbarPage > -1) return uni.switchTab({ url })

  uni[type]({ url })
}

/**
 * 获取当前 route
 */
export const getPage = (index = 0) => {
  const pages = getCurrentPages()
  const i = pages.length - 1 + index
  return pages[i]
}
